package com.example.excelUtil;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;

/**
 * @version 1.0
 * @date 2022-12-11 18:00
 */
public class TemplateExcelUtils {

//    /**
//     * Excel所有图片设置
//     *
//     * @param bytes
//     * @return
//     * @throws IOException
//     */
//    public static WriteCellData<Void> imageCells(byte[] bytes) throws IOException {
//
//
//        WriteCellData<Void> writeCellData = new WriteCellData<>();
//        // 这里可以设置为 EMPTY 则代表不需要其他数据了
//        //writeCellData.setType(CellDataTypeEnum.EMPTY);
//
//        // 可以放入多个图片
//        List<ImageData> imageDataList = new ArrayList<>();
//        writeCellData.setImageDataList(imageDataList);
//
//
//        ImageData imageData = new ImageData();
//        imageDataList.add(imageData);
//        // 设置图片
//        imageData.setImage(bytes);
//        // 图片类型
//        //imageData.setImageType(ImageData.ImageType.PICTURE_TYPE_PNG);
//        // 上 右 下 左 需要留空，这个类似于 css 的 margin；这里实测 不能设置太大 超过单元格原始大小后 打开会提示修复。暂时未找到很好的解法。
//        imageData.setTop(10);
//        imageData.setRight(10);
//        imageData.setBottom(10);
//        imageData.setLeft(10);
//
//        // * 设置图片的位置。Relative表示相对于当前的单元格index。first是左上点，last是对角线的右下点，这样确定一个图片的位置和大小。
//        // 目前填充模板的图片变量是images，index：row=7,column=0。所有图片都基于此位置来设置相对位置
//        // 第1张图片相对位置
//        imageData.setRelativeFirstRowIndex(0);
//        imageData.setRelativeFirstColumnIndex(0);
//        imageData.setRelativeLastRowIndex(20);
//        imageData.setRelativeLastColumnIndex(5);
//
//
//        return writeCellData;
//    }


    /**
     * 导出文件时为Writer生成OutputStream.
     *
     * @param fileName 文件名
     * @param response response
     * @return ""
     */
    public static OutputStream getOutputStream(String fileName, HttpServletResponse response) throws Exception {
        try {
            fileName = URLEncoder.encode(fileName, "UTF-8");
            response.setContentType("application/vnd.ms-excel");
            response.setCharacterEncoding("utf8");
            response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
            response.setHeader("Pragma", "public");
            response.setHeader("Cache-Control", "no-store");
            response.addHeader("Cache-Control", "max-age=0");
            return response.getOutputStream();
        } catch (IOException e) {
            throw new Exception("导出excel表格失败!", e);
        }
    }

}
